// 题目：
// 实现一个对象深层属性访问，可以通过 fn(data, 'a/b/c') 获取到 data.a.b.c 的值为1
const data = {
  a: {
    b: {
      c: 1,
      d: 2
    }
  }
}

// 实现：
// 实现一：reduce
const fn = (data, path) => {
  return path.split('/').reduce((obj, key) => obj[key], data);
}
// 实现二：递归
const fn2 = (data, path) => {
  if(!path.includes('/')) {
    return data[path];
  } else {
    const arr = path.split('/');
    const attr = arr[0];
    const newPath = arr.slice(1).join('/');
    return fn2(data[attr], newPath);
  }
}
// 实现三：while
const fn3 = (data, path) => {
  while(path.includes('/')) {
    const arr = path.split('/');
    const attr = arr[0];
    data = data[attr];
    path = arr.slice(1).join('/');
  }
  return data[path];
}
// 实现四：eval
const fn4 = (data, path) => {
  return eval(`data['${path.split('/').join(`']['`)}']`);
}